﻿
using Dora.Orm.Core.Domain.Entities;
using Dora.Services.AdminUser.Dto.QueryDto;
using Dora.Services.AdminUser.Dto.ViewDto;
using Dora.Services.AdminUser.Entities;
using Dora.Tools.Utility.Const;
using Surging.Core.Common;
using Surging.Core.CPlatform.Ioc;
using Surging.Core.CPlatform.Runtime.Server.Implementation.ServiceDiscovery.Attributes;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Dora.Services.AdminUser.IApplication
{

    /// <summary>
    /// 大社产品类型/目的地保险产品绑定服务接口
    /// </summary>
    [ServiceBundle("api/" + DoraModuleName.AdminUser + "/{Service}")]
    public interface IOrgInsuranceSettingService : IServiceKey
    {

        /// <summary>
        /// 批量新增及修改
        /// </summary>
        /// <param name="orgInsuranceSettingEntities"></param>
        /// <returns></returns>
        [Service(Date = "2019-10-21", Director = "焦石", Name = "批量新增及修改")]
        Task<bool> BatchSaveOrgInsuranceSettings(List<OrgInsuranceSettingEntity> orgInsuranceSettingEntities);

        ///// <summary>
        ///// 分页获取数据
        ///// </summary>
        ///// <param name="input"></param>
        ///// <returns></returns>
        //[Service(Date = "2019-10-21", Director = "焦石", Name = "分页获取数据")]
        //Task<ResultDto<PageDataList<OrgInsuranceSettingViewDto>>> GetOrgInsuranceSettingPageList(OrgInsuranceSettingQueryDto input);

        /// <summary>
        /// 获取所有数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Service(Date = "2019-10-21", Director = "焦石", Name = "获取所有数据")]
        Task<ResultDto<List<OrgInsuranceSettingEntity>>> GetOrgInsuranceSettingByOrg(OrgInsuranceSettingQueryDto input);

        /// <summary>
        /// 逻辑删除或恢复
        /// </summary>
        /// <param name="orgInsuranceSettingEntities"></param>
        /// <param name="isDelete"></param>
        /// <returns></returns>
        [Service(Date = "2019-10-21", Director = "焦石", Name = "逻辑删除或恢复")]
        Task<int> UpZOrgSeting(List<OrgInsuranceSettingEntity> orgInsuranceSettingEntities, Boolean isDelete);
        /// <summary>
        /// 彻底删除
        /// </summary>
        /// <param name="orgInsuranceSettingEntities"></param>
        /// <returns></returns>
        [Service(Date = "2019-10-21", Director = "焦石", Name = "彻底删除")]
        Task<int> ClearZOrgSeting(List<OrgInsuranceSettingEntity> orgInsuranceSettingEntities);


        /// <summary>
        /// 批量获取默认集合
        /// </summary>
        /// <param name="orgInsuranceDefaultEntities"></param>
        /// <returns></returns>
        [Service(Date = "2019-11-11", Director = "焦石", Name = "批量获取默认集合")]
        Task<List<OrgInsuranceDefaultEntity>> GetOrgInsuranceDefaultEntities(List<OrgInsuranceDefaultEntity> orgInsuranceDefaultEntities);

        /// <summary>
        /// 获取所有数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Service(Date = "2019-10-21", Director = "焦石", Name = "获取所有数据")]
        Task<List<OrgInsuranceSettingViewDto>> GetOrgInsuranceSettingViewDtoByOrg(OrgInsuranceSettingQueryDto input);
        /// <summary>
        /// 根据外键获取此供应商排除的区域
        /// </summary>
        /// <param name="ExcludeSupplierId"></param>
        /// <returns></returns>
        [Service(Date = "2019-12-2", Director = "焦石", Name = "根据外键获取此供应商排除的区域")]
        Task<List<OrgInsuranceSupplierAreaEntity>> GetByExcludeSupplierId(int ExcludeSupplierId);
        /// <summary>
        /// 组团社解约供应商或其签约区域
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [Service(Date = "2019-12-16", Director = "焦石", Name = "组团社解约供应商或其签约区域")]
        Task<ResultDto> DelSupplierAreas(RescissionSupplierUpdateDto input);

    }
}